#ifndef __WIZ_BASE_TYPE_OF_HPP__SHANHAOBO_19800429__
#define __WIZ_BASE_TYPE_OF_HPP__SHANHAOBO_19800429__

#include "./TypeTraits/WizBaseTypeTraits.hpp"

namespace Wiz
{
	template<class T1>
	struct TypeOf
	{
	private:
		TypeOf(){}
	public:
		static const ::Wiz::UInt::Type SizeOf = sizeof(T1);
        static const ::Wiz::Bool::Type IsPointer = ::Wiz::TypeTraits::Is::Pointer<T1>::bValue;
        static const ::Wiz::Bool::Type IsReference = ::Wiz::TypeTraits::Is::tReference<T1>::bValue;
		template<typename T2>
		struct With
		{
		private:
			With(){}
		public:
            static const ::Wiz::Bool::Type IsSame = ::Wiz::TypeTraits::Is::Same<T1, T2>::bValue;
		};
	}; /// end of namespace TypeOf
} /// end of namespace Wiz

#endif /*__WIZ_BASE_TYPE_OF_HPP__SHANHAOBO_19800429__*/
